﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using CajaChica.Entidades;
namespace CajaChica.Clases 
{
    class clsPersona
    {
        cajaEntities objCajaEntidades;
        public clsPersona()
        {
        
        }
        
        public void Guardar(string ruc, string razonSocial, string nombre1, string nombre2,
            string apellido1, string apellido2, string tipoDocumento, string telefono, string tipoPersona,
            string direccion, string atencion)
        {
            objCajaEntidades = new cajaEntities();
            personas persona = new personas
            {
                rut = ruc,
                rs = razonSocial,
                nom1 = nombre1,
                nom2 = nombre2,
                ape1 = apellido1,
                ape2 = apellido2,
                tdoc = tipoDocumento,
                fono = telefono,
                tipo = tipoPersona,
                di = direccion,
                aten = atencion,
                codigo = ruc
            };
            objCajaEntidades.AddTopersonas(persona);
            objCajaEntidades.SaveChanges();
        }

        public void GuardarCambios(int codigo, string ruc, string razonSocial, string nombre1, 
            string nombre2, string apellido1, string apellido2, string tipoDocumento, 
            string telefono, string tipoPersona, string direccion, string atencion)
        {
            objCajaEntidades = new cajaEntities();
            personas persona = objCajaEntidades.personas.FirstOrDefault(
                p => p.id == codigo);
                
            persona.rut = ruc;
            persona.rs = razonSocial;
            persona.nom1 = nombre1;
            persona.nom2 = nombre2;
            persona.ape1 = apellido1;
            persona.ape2 = apellido2;
            persona.tdoc = tipoDocumento;
            persona.fono = telefono;
            persona.tipo = tipoPersona;
            persona.di = direccion;
            persona.aten = atencion;
            persona.codigo = ruc;
           
            objCajaEntidades.SaveChanges();
        }

        public void Eliminar(int codigo)
        {
            objCajaEntidades = new cajaEntities();
            personas persona = objCajaEntidades.personas.FirstOrDefault(
                p => p.id == codigo);
            objCajaEntidades.DeleteObject(persona);
            objCajaEntidades.SaveChanges();
        }

        public ArrayList CargarDatosGridView()
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from p in objCajaEntidades.personas
                        join td in objCajaEntidades.tipo_documento on p.tdoc equals td.id
                        join tp in objCajaEntidades.tipo_persona on p.tipo equals tp.id
                        orderby p.rs ascending
                        select new
                        {
                            CODIGO = p.id,
                            RUC = p.rut,
                            RAZON_SOCIAL = p.rs,
                            NOMBRE1 = p.nom1,
                            NOMBRE2 = p.nom2,
                            APELLIDO1 = p.ape1,
                            APELLIDO2 = p.ape2,
                            CODIGO_TIPO_DOCUMENTO = p.tdoc,
                            TIPO_DOCUMENTO = td.descripcion,
                            TELEFONO = p.fono,
                            CODIGO_TIPO = p.tipo,
                            TIPO_PERSONA = tp.descripcion,
                            DIRECCION = p.di,
                            ATENCION = p.aten
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }

        public ArrayList CargarDatosComboBox()
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from p in objCajaEntidades.personas
                        where p.tipo.Equals("1")
                        orderby p.rs ascending
                        select new
                        {
                            CODIGO = p.id,
                            RAZON_SOCIAL = p.rs,
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }

        public ArrayList CargarDatosEmpleadosComboBox()
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from p in objCajaEntidades.personas
                        where p.tipo.Equals("5")
                        orderby p.rs ascending
                        select new
                        {
                            CODIGO = p.id,
                            RAZON_SOCIAL = p.rs,
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }

        public ArrayList Buscar(string criterio)
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();

            var query = from p in objCajaEntidades.personas
                        join td in objCajaEntidades.tipo_documento on p.tdoc equals td.id
                        join tp in objCajaEntidades.tipo_persona on p.tipo equals tp.id
                        where p.rs.Contains(criterio)
                        select new
                        {
                            CODIGO = p.id,
                            RUC = p.rut,
                            RAZON_SOCIAL = p.rs,
                            NOMBRE1 = p.nom1,
                            NOMBRE2 = p.nom2,
                            APELLIDO1 = p.ape1,
                            APELLIDO2 = p.ape2,
                            CODIGO_TIPO_DOCUMENTO = p.tdoc,
                            TIPO_DOCUMENTO = td.descripcion,
                            TELEFONO = p.fono,
                            CODIGO_TIPO = p.tipo,
                            TIPO_PERSONA = tp.descripcion,
                            DIRECCION = p.di,
                            ATENCION = p.aten
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }
    }
}
